package chapter08.pool;

import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.TimeUnit;

@Slf4j
public class ThreadPoolTest {
    public static void main(String[] args) {
        ThreadPool threadPool = new ThreadPool(1,1, TimeUnit.SECONDS,1,(queue,task)->{
            // 1）死等
            queue.put(task);
            // 2)带超时等待
//            queue.offer(task,1,TimeUnit.SECONDS);
            // 3)让调用者放弃执行
//            log.debug("放弃：{}",task);
            // 4)让调用者抛出异常
//            throw new RuntimeException("任务执行失败"+task);
            // 5)让执行者自己执行任务
//            task.run();
        });

        for (int i=1;i<=3;i++){
            int j=i;
            threadPool.execute(()->{
                log.debug("运行 -{}",j);
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            });
        }
    }
}
